const arr=[1,2,3,4]

Array.prototype.my_forEach=function(callback){
     for(let i=0;i<this.length;i++){
        callback(this[i],i,this)
     }
}
arr.my_forEach((item,index,array)=>{
    console.log(item,index,array)
})

Array.prototype.my_map=function(callback){
    const  res=[]
    for(let i=0;i<this.length;i++){
        res.push(callback(this[i],i,this))

    }
    return res
}
arr.my_map((item)=>{
    return item+1
})

Array.prototype.my_Filter=function(callback){
     const res=[]
    for(let i=0;i<this.length;i++){
        if(callback(this[i],i,this)){
              res.push(this[i])
        }
    }
    return res
}
const res=arr.my_Filter((item,index,array)=>{
    return item>1
})
Array.prototype.my_Every=function(callback){
    for(let i=0;i<this.length;i++){
        if(!callback(this[i],i,this)){
         return   false
        }
    }
    return true


}
const g = arr.my_Every((item,index,array)=>{
     return  item >1

})

Array.prototype.my_reduce=function(callback,...arg){
    let pre,start=0
    arg.length?pre=arg[0]:(pre=this[0],start=1)
    for(let i=start;i<this.length;i++){
      pre=  callback(pre,this[i],i,this)
    }
    return pre
}
const h=arr.my_reduce((pre,item,index,array)=>{
    return pre+item
         
},0)